package com.ccp.dev.workflow.service.bpm;

import com.ccp.dev.system.model.SysUser;
import com.ccp.dev.workflow.model.BpmNodeUser;
import com.ccp.dev.workflow.model.bpm.CalcVars;
import com.ccp.dev.workflow.model.bpm.PreViewModel;
import com.ccp.dev.workflow.model.bpm.TaskExecutor;

import java.util.List;
import java.util.Set;

/**
 * 计算人员接口。
 * 人员计算使用策略模式，方便对新增的策略进行扩展。
 * @author jiayueqiao.
 *
 */
public interface IBpmNodeUserCalculation {
	
	/**
	 * 用于预览。
	 * @param bpmNodeUser
	 * @param vars
	 * @return
	 */
	List<SysUser> getExecutor(BpmNodeUser bpmNodeUser, CalcVars vars);

	/**
	 * 用于流程任务。
	 * @param bpmNodeUser
	 * @param vars
	 * @return
	 */
	Set<TaskExecutor> getTaskExecutor(BpmNodeUser bpmNodeUser, CalcVars vars);
	
	/**
	 * 获取标题
	 * @return
	 */
	String getTitle();
	
	
	/**
	 * 预览时是否需要设置预览参数值。
	 * @return
	 */
	boolean supportMockModel();
	
	/**
	 * 返回模拟用户
	 * @param bpmNodeUser
	 * @return
	 */
	public List<PreViewModel> getMockModel(BpmNodeUser bpmNodeUser);
	
	/**
	 * 是否支持人员预览
	 * @return
	 */
	public boolean supportPreView();

}
